﻿using System.Collections.Generic;
using System.Linq;

namespace Jet.Dal
{
	/// <summary>
	/// Interface for rtepositories which supports navigations
	/// </summary>
	public interface INavigable<out TEntity>
	{
		/// <summary>
		/// Returns query to load data. Navigations properties are pathes to related objects
		/// which loaded with this query materializing. Instead of it lazy loading can be used, or both ways can be combined.
		/// Each of these 3 ways can dramatically improve or decrease performance, depends on situation.
		/// </summary>
		IQueryable<TEntity> GetQuery(IEnumerable<string> navigations);
	}
}